package itheima01;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/*
    总结缓冲流的规律:
    1.所有的缓冲流的名字,去掉Buffered之后,就是它的父类,父类里的方法,缓冲流都有
    2.所有的缓冲流的名字,去掉Buffered之后,就是创建对象时构造方法所需要的内容

    java.io.BufferedOutputStream类: 高效字节缓冲输出流    写出字节的   写出去
        1.作用: 底层定义了一个长度为8192的数组,用来提高效率
        2.常用方法:
            (1)public void close(): 关闭流,释放资源
            (2)public void write(int b): 写出一个字节的
            (3)public void write(byte[] bs): 写出一个字节数组的
            (4)public void write(byte[] bs,int off,int len): 写出一个字节数组的一部分
                参数:
                    byte[] bs: 字节数组
                    int off: 起始索引
                    int len: 写出字节的个数
        3.构造方法:
            BufferedOutputStream(OutputStream out) : 创建一个新的缓冲输出流，以将数据写入指定的底层输出流。
                参数:
                    OutputStream out: 字节输出流抽象方法,传递子类FileOutputStream对象

        4.使用步骤:
            (1)创建字节输出流OutputStream类的子类FileOutputStream对象fos
            (2)创建高效字节缓冲输出流BufferedOutputStream类的对象bos,传递fos对象
            (3)高效字节缓冲输出流BufferedOutputStream类的对象bos调用write方法,写出字节
            (4)高效字节缓冲输出流BufferedOutputStream类的对象bos调用close方法,关闭流,释放资源

        5.注意实现:
            (1)对于缓冲流,千万不要自己调用flush方法
		    (2)只需要关闭缓冲流,自动关闭缓冲流所关联的其它流对象
 */
public class Demo01BufferedOutputStream {
    public static void main(String[] args) throws IOException {
        //(1)创建字节输出流OutputStream类的子类FileOutputStream对象fos
        //FileOutputStream fos = new FileOutputStream("day12\\bos.txt");

        //(2)创建高效字节缓冲输出流BufferedOutputStream类的对象bos,传递fos对象
        //BufferedOutputStream bos = new BufferedOutputStream(fos);

        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("day12\\bos.txt"));

        //(3)高效字节缓冲输出流BufferedOutputStream类的对象bos调用write方法,写出字节

        //写出一个字节
        bos.write(97);

        byte[] bs = "bcdef".getBytes();

        //写出一个字节数组
        bos.write(bs);

        //写出一个字节数组的一部分
        bos.write(bs,1,3);

        //(4)高效字节缓冲输出流BufferedOutputStream类的对象bos调用close方法,关闭流,释放资源

        bos.close();
    }
}
